package javase2.day05.demo01;

import java.io.FileNotFoundException;
import java.io.IOException;

/*
关键字throws:运用于方法声明之上,用于表示当前方法不处理异常,而是提醒该方法的调用者来处理异常(抛出异常).
    作用：
        当方法内部抛出异常对象的时候，那么我们就必须处理这个异常
        可以使用throws关键字处理异常对象，会把异常对象声明抛出给方法的调用者（自己不处理交给别人处理），最终交给JVM虚拟机-->中断处理
    使用格式：
        修饰符  返回值类型  方法名称(参数列表)  throws AAAException，BBBException...{
                throw new  AAAException("产生原因")
                throw new  BBBException("产生原因")
                ...
        }
注意：
    1throws关键字必须写在方法声明处
    2throws关键字后边声明的异常必须是Exception或者其子类
    3方法内部如果抛出多个异常对象，那么throws后边必须特声明多个异常
        若抛出的多个异常对象有子父类关系，那么直接声明父类异常即可
    4调用了一个声明抛出一异常的方法，我们必须处理声明的异常
        要么继续throws声明抛出交给调用者处理，最终交给JVM
        要么try...catch自己处理异常
 */
public class Throws {
    //FileNotFoundException继承IOException
    public static void main(String[] args) throws FileNotFoundException, IOException {
        readFile("c://a.txt");
    }

    /*
    定义一个方法，对传递的文件路径进行合法性判断
    如果不是"c://a.txt"，那就抛出文件找不到异常，告知方法调用者
     */
    public static void readFile(String fileName) throws FileNotFoundException, IOException {
        if (!fileName.endsWith(".txt")){
            throw new IOException("文件的后缀名不对");
        }
        System.out.println("后缀名没有问题");
        if (!fileName.equals("c://a.txt")){
            throw new FileNotFoundException("传递的文件路径不是c://a.txt");
        }
        System.out.println("路径没有问题");

    }
}
